import { createStore } from 'vuex'
import { login, getinfo } from '~/api/manager'
import { setToken, removeToken } from '~/composables/auth'
// 创建一个新的 store 实例
const store = createStore({
    state() {
        return {
            //用户信息
            user: {},

            config: {}
        }
    },
    mutations: {
        SET_USERINFO(state, user) {
            state.user = user
        },
        // stu学员端更新用户实现及时渲染头像(调用将头像值更新)
        updateUserPhoto(state, newPhoto) {
            state.user.photo = newPhoto
        },
    },
    actions: {
        // 登录
        login({ commit }, { telephone,password,role }){
            return new Promise((resolve,reject)=>{
                login(telephone,password,role).then(res=>{
                    if(res.data.code === "200") {
                        setToken(res.data.data.token)
                    }
                    resolve(res)
                }).catch(err=>reject(err))
            })
        },
        // 获取当前登录用户信息
        getinfo({ commit }) {
            return new Promise((resolve, reject) => {
                getinfo().then(res => {
                    commit("SET_USERINFO", res.data.data)
                    resolve(res)
                }).catch(err => reject(err))
            })
        },
        // 退出登录
        logout({ commit }) {
            // 移除cookie里的token
            removeToken()
            // 清除当前用户状态 vuex
            commit("SET_USERINFO", {})
        }
    }
})

export default store
